
typedef enum
{
	RISCV_X0,
	RISCV_X1,
	RISCV_X2,
	RISCV_X3,
	RISCV_X4,
	RISCV_X5,
	RISCV_X6,
	RISCV_X7,
	RISCV_X8,
	RISCV_X9,
	RISCV_X10,
	RISCV_X11,
	RISCV_X12,
	RISCV_X13,
	RISCV_X14,
	RISCV_X15,
	RISCV_X16,
	RISCV_X17,
	RISCV_X18,
	RISCV_X19,
	RISCV_X20,
	RISCV_X21,
	RISCV_X22,
	RISCV_X23,
	RISCV_X24,
	RISCV_X25,
	RISCV_X26,
	RISCV_X27,
	RISCV_X28,
	RISCV_X29,
	RISCV_X30,
	RISCV_X31,
	RISCV_F0,
	RISCV_F1,
	RISCV_F2,
	RISCV_F3,
	RISCV_F4,
	RISCV_F5,
	RISCV_F6,
	RISCV_F7,
	RISCV_F8,
	RISCV_F9,
	RISCV_F10,
	RISCV_F11,
	RISCV_F12,
	RISCV_F13,
	RISCV_F14,
	RISCV_F15,
	RISCV_F16,
	RISCV_F17,
	RISCV_F18,
	RISCV_F19,
	RISCV_F20,
	RISCV_F21,
	RISCV_F22,
	RISCV_F23,
	RISCV_F24,
	RISCV_F25,
	RISCV_F26,
	RISCV_F27,
	RISCV_F28,
	RISCV_F29,
	RISCV_F30,
	RISCV_F31,
	RISCV_MIE,
	RISCV_MSTATUS,
	RISCV_MTVEC,
	RISCV_MCAUSE,
	RISCV_MEPC,
	RISCV_MTVAL,
	RISCV_MSIP
} RISCVClobbers;

static const char *RISCVClobberNames[] = {
		[RISCV_X0] = "x0",
		[RISCV_X1] = "x1",
		[RISCV_X2] = "x2",
		[RISCV_X3] = "x3",
		[RISCV_X4] = "x4",
		[RISCV_X5] = "x5",
		[RISCV_X6] = "x6",
		[RISCV_X7] = "x7",
		[RISCV_X8] = "x8",
		[RISCV_X9] = "x9",
		[RISCV_X10] = "x10",
		[RISCV_X11] = "x11",
		[RISCV_X12] = "x12",
		[RISCV_X13] = "x13",
		[RISCV_X14] = "x14",
		[RISCV_X15] = "x15",
		[RISCV_X16] = "x16",
		[RISCV_X17] = "x17",
		[RISCV_X18] = "x18",
		[RISCV_X19] = "x19",
		[RISCV_X20] = "x20",
		[RISCV_X21] = "x21",
		[RISCV_X22] = "x22",
		[RISCV_X23] = "x23",
		[RISCV_X24] = "x24",
		[RISCV_X25] = "x25",
		[RISCV_X26] = "x26",
		[RISCV_X27] = "x27",
		[RISCV_X28] = "x28",
		[RISCV_X29] = "x29",
		[RISCV_X30] = "x30",
		[RISCV_X31] = "x31",
		[RISCV_F0] = "f0",
		[RISCV_F1] = "f1",
		[RISCV_F2] = "f2",
		[RISCV_F3] = "f3",
		[RISCV_F4] = "f4",
		[RISCV_F5] = "f5",
		[RISCV_F6] = "f6",
		[RISCV_F7] = "f7",
		[RISCV_F8] = "f8",
		[RISCV_F9] = "f9",
		[RISCV_F10] = "f10",
		[RISCV_F11] = "f11",
		[RISCV_F12] = "f12",
		[RISCV_F13] = "f13",
		[RISCV_F14] = "f14",
		[RISCV_F15] = "f15",
		[RISCV_F16] = "f16",
		[RISCV_F17] = "f17",
		[RISCV_F18] = "f18",
		[RISCV_F19] = "f19",
		[RISCV_F20] = "f20",
		[RISCV_F21] = "f21",
		[RISCV_F22] = "f22",
		[RISCV_F23] = "f23",
		[RISCV_F24] = "f24",
		[RISCV_F25] = "f25",
		[RISCV_F26] = "f26",
		[RISCV_F27] = "f27",
		[RISCV_F28] = "f28",
		[RISCV_F29] = "f29",
		[RISCV_F30] = "f30",
		[RISCV_F31] = "f31",
		[RISCV_MIE] = "mie",
		[RISCV_MSTATUS] = "mstatus",
		[RISCV_MTVEC] = "mtvec",
		[RISCV_MCAUSE] = "mcause",
		[RISCV_MEPC] = "mepc",
		[RISCV_MTVAL] = "mtval",
		[RISCV_MSIP] = "msip",
};

static const char *riscv_gp_integer_regs[] = { "$x0", "$x1", "$x2", "$x3", "$x4",
										   "$x5", "$x6", "$x7", "$x8", "$x9",
										   "$x10", "$x11", "$x12", "$x13", "$x14",
										   "$x15", "$x16", "$x17", "$x18", "$x19",
										   "$x20", "$x21", "$x22", "$x23", "$x24",
										   "$x25", "$x26", "$x27", "$x28", "$x29",
										   "$x30", "$x31" };
static const char *riscv_arg_integer_regs[] = { "$a0", "$a1", "$a2", "$a3", "$a4",
										   "$a5", "$a6", "$a7" };
static const char *riscv_temp_integer_regs[] = { "$t0", "$t1", "$t2", "$t3", "$t4",
										   "$t5", "$t6" };
static const char *riscv_save_integer_regs[] = { "$s0", "$s1", "$s2", "$s3", "$s4",
										   "$s5", "$s6", "$s7", "$s8", "$s9", "$s10", "$s11" };
static const char *riscv_float_regs[] = { "$f0", "$f1", "$f2", "$f3", "$f4",
											"$f5", "$f6", "$f7", "$f8", "$f9",
											"$f10", "$f11", "$f12", "$f13", "$f14",
											"$f15", "$f16", "$f17", "$f18", "$f19",
											"$f20", "$f21", "$f22", "$f23", "$f24",
											"$f25", "$f26", "$f27", "$f28", "$f29",
											"$f30", "$f31" };
static const char *riscv_machine_integer_regs[] = { "$mie", "$mstatus", "$mtvec", "$mcause", "$mepc", "$mtval", "$msip" };

